草庐IT

c++ - QML Qt openUrlExternally

全部标签

c++ - 数组错误指针的增量运算符?

我正在尝试一些非常简单的事情,本来应该很简单,但不知何故它让我很困惑......我试图理解++在被视为指针时对数组的影响以及在被视为数组时对指针的影响。所以,intmain(){inta[4]={1,4,7,9};*a=3;*(a+1)=4;*++a=4;//compilererror}1:所以在*(a+1)=4我们设置a[1]=4;//快乐的但是当*++a=4;时,我希望指针a递增1,因为++先于*然后*开始,我们使它等于4。但是这段代码只是行不通...这是为什么?另一个问题:intmain(){int*p=(int*)malloc(8);*p=5;printf("%d",p[0])

c++ - 我应该使用哪种数据类型在 C++ 的变量中存储最多 18 位数字?

我正在尝试解决要求我输入和输出最多18位整数值的代码。不幸的是,我无法以任何数据类型存储该值。我已经试过了longintunsignedlonglonglonglongdouble,这些似乎都不起作用。你能给我一些可能帮助我输出值(value)的建议吗? 最佳答案 18位给出的最大可能值为999,999,999,999,999,999≈9.9×1017。这将适合一个无符号的64位整数(最大值264,大约为1.8446744×1019)。尝试使用uint64_t类型来确保你得到这个。希望这对您有所帮助!

c++ - 如何从键盘输入数学表达式?

关闭。这个问题需要更多focused.它目前不接受答案。想改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭8年前。Improvethisquestion我有一个简单的C程序intmain(){intn,maxn=21;floatSN,x;printf("inputx:");scanf("%f",&x);printf("inputmaxn:");scanf("%d",&maxn);for(n=0;n我需要让它变得通用,以便用户可以输入任何表达式来用用户从键盘输入的任何内容替换pow(x,n)。如何将表达式放入程序中?

c++ - 内存映射文件是否为大缓冲区提供了优势?

我的程序处理需要存储在连续内存(几千兆字节)中的大型数据集。使用std::allocator(即malloc或new)分配内存会导致系统停顿,因为大部分虚拟内存被保留并且物理内存被填满上。由于该程序一次只能在一小部分上工作,我的问题是使用内存映射文件是否会提供优势(即mmap或Windows等效文件。)这就是创建一个大的稀疏临时文件并将其映射到虚拟内存。或者是否有另一种技术可以改变系统的分页策略,以便一次将更少的页面加载到物理内存中。我试图避免构建一次加载文件的多个部分的流机制,而是依赖于系统的vm分页。 最佳答案 是的,mmap具

c++ - 内存分配栈

在栈中,内存是为main保留的,我们称之为main函数的栈帧。当我们调用Add函数时,内存被保留在栈顶。Add函数栈帧中,a和b为局部指针,c为整数,计算和然后我们返回引用。c是Add函数的局部变量。现在当Add函数执行完成时,堆栈中的内存空间也被释放,所以当我们尝试使用指针访问main中的这个地址时p,我们试图访问的基本上是一个释放的空间。编译器给出了警告,但为什么它仍然正确打印值5?答案可能是机器没有释放内存空间,因为它认为没有必要,因为没有更多的功能。但是,如果我们编写另一个函数Hello那么它肯定会在调用堆栈中为Add函数释放空间,但程序仍会打印Yay5是不是因为像在堆中一样,

c++ - 将字符串转换为函数

我正在尝试学习在程序中执行shellcode,但我什至无法运行最基本的代码。以下代码应该在运行时退出终端:#include#include#include#includecharexitcode[]="\xb0\x01\x31\xdb\xcd\x80";intmain(){int(*func)();func=(int(*)())exitcode;(int)(*func)();return0;}但我得到的只是一个段错误。GDB说当程序访问exitcode[at(int)(*func)();的内存位置时就会发生这种情况。],但我不确定为什么这会导致问题。我正在运行64位LinuxMint操

c++ - 在 C/C++ 中自动检测操作系统

有什么方法可以使用您的C/C++代码自动检测您的操作系统吗?我需要它来为Linux、Windows甚至在RaspberryPi上运行一些跨平台代码。我正在尝试自动检测操作系统,这样我就不会陷入必须请求机器上运行的操作系统作为输入的情况。我在考虑像验证文件系统结构之类的黑客攻击,我不知道我是否在做某事。 最佳答案 我过去使用下面的代码在linux和windows之间进行检查#includeintmain(intargc,char*argv[]){#ifdef_WIN32printf("inWindows");#endif#ifdefl

c++ - 数组的地址 VS 指针到指针 : Not the same?

我在处理指针时遇到了一个问题。到目前为止,我知道当我们创建任何数据类型的数组时,数组的名称实际上是一个指向数组第一个索引的指针(可能是静态指针)。对吗?所以我想要实现的是创建另一个指针,它可以保存数组名称的地址(即指向另一个指针的指针,在我的例子中是数组名称)例如:charname[]="ABCD";//nameholdingtheaddressofname[0]char*ptr1=name;//Whenthisispossiblechar**ptr2=&name;//Whynotthis.Itgivemeerrorthatcannotconvertchar(*)[5]tochar**

c++ - 反斜杠后是否允许空格以继续一行(在 C/C++ 中)

这个问题在这里已经有了答案:WhybothclangandgcconlygiveawarningwhenthereisaspaceafterbackslashifCstandardsaysthatwhitespaceisforbidden?(4个答案)关闭3年前。当使用\续行时,在反斜杠之后是否允许有空格(在同一行)?

c++ - 我如何查看 Linux .so 或 .a 对象并查看它们包含哪些函数?

链接器大概可以做到这一点,那么是否有一个命令行工具可以列出目标文件中的函数并告诉我函数的名称及其签名? 最佳答案 对于共享库,您必须使用:nm-D/path/to/libwhatever.so.没有-D,nm转储debug符号;-D指的是实际用于动态链接的动态符号。来自Ubuntu12session:$nm/lib/i386-linux-gnu/libc.so.6nm:/lib/i386-linux-gnu/libc.so.6:nosymbols$nm-D/lib/i386-linux-gnu/libc.so.6|tail0011f